/*
 * 中介者模式，听上去有一点陌生。但是，只要我给朋友们打个比方就明白了。
 *
 * 早先自由恋爱没有现在那么普遍的时候，男女之间的相识还是需要通过媒婆之间才能相互认识。
 *
 * 男孩对女方有什么要求，可以通过媒婆向女方提出来；当然，女方有什么要求也可以通过媒婆向男方提出来。
 *
 * 所以，中介者模式在我看来，就是媒婆模式
 */

typedef struct mediator
{
	people * man;
	people * woman;
}mediator;

/*
 * 上面的数据结构是给媒婆的，那么当然还有一个数据结构是给男方、女方的
 */
typedef struct people
{
	mediator * pmediator;

	void (*request)(struct people * ppeople);
	void (*process)(struct people * ppeople);
}people;

/*
 * 所以，这里我们看到的如果是男方的要求，那么这个要求应该女方去处理啊，怎么处理呢？
 */
void man_request(struct people * ppeople)
{
	assert(NULL != ppeople);
	ppeople->pmediator->woman->process(ppeople->pmediator->woman);
}

/*
 * 上面做的是男方向女方提出的要求，所以女方也可以向男方提要求了。毕竟男女平等嘛
 */
void woman_request(struct people * ppeople)
{
	assert(NULL != ppeople);
	ppeople->pmediator->man->process(ppeople->pmediator->man);
}
